//
//  TSNetTools.h
//  TaShuo
//
//  Created by N-X on 2018/1/17.
//  Copyright © 2018年 MRNAN. All rights reserved.
//

#import <Foundation/Foundation.h>

typedef void(^BlockAction)(void);
typedef void(^GroupResponseFailure)(NSArray * errorArray);
typedef void (^NetResponseSuccessBlock)(id  responseJson);
typedef void (^NetCompletionErrorBlock)(NSError *error);
typedef void (^NetCompletionHandle)(NSError * error , id responseJson , BOOL isCache);

typedef NS_ENUM(NSUInteger,TSNetToolsErrorType)
{
    TSNetToolsErrorType_netNotConnect = -2018,  //网络没有链接
};

@interface TSNetTools : NSObject
SINGLETON_INTERFACE_ARC(TSNetTools)

#pragma mark - 基础API

//  不带缓存的
/** 在PPNetworkHelper基础上再包一层，做一些自定义的扩展。因为 PPNetworkHelper是依赖于cocoapods的，所以修改里面东西还是会被改变*/
- (NSURLSessionTask *)GET:(NSString *)URL
                    params:(id)params
                    isShowProgress:(BOOL)isShowProgress
                    completion:(NetCompletionHandle)completion;

// 带缓存的
- (NSURLSessionTask *)Cache_GET:(NSString *)URL
                         params:(id)params
                        isShowProgress:(BOOL)isShowProgress
                     completion:(NetCompletionHandle)completion;

// POST 不带缓存的
- (NSURLSessionTask *)POST:(NSString *)URL
                    params:(id)params
            isShowProgress:(BOOL)isShowProgress
                completion:(NetCompletionHandle)completion;

// 带缓存的
- (NSURLSessionTask *)Cache_POST:(NSString *)URL
                          params:(id)params
                  isShowProgress:(BOOL)isShowProgress
                      completion:(NetCompletionHandle)completion;

/**
 多组并发请求

 @param requests 多组请求的block
 @param success 组成功的回调，可以做一些事情，比如拼接数据之类的(所有都success之后才会调用)
 @param failure 有一个请求错误就会调用
 */
- (void)groupPost:(BlockAction)requests
          success:(BlockAction)success
          failure:(GroupResponseFailure)failure;


@end
